In computer programming, a software upgrade of a device may include modified code, driver, an application programming interface (API), and/or an application. The upgrade may add new features, improve performance and stability, or fix bugs in a previous software version. For example, a software upgrade may include a patch that modifies the software to address an error identified in a prior version of the software. In another example, a software upgrade may include new code to enable a new feature. An update may be obtained by a device, for example, via a website or a file transfer protocol (FTP) device. Alternatively, the developer may forward the update to the device based on stored information associated with the device. For example, the developer may store a list of devices running an application or that include particular hardware, and the developer may forward a software update to the identified devices.